use anyhow::Context;
use reqwest::Url;

/// 获取指定用户指定关注列表，需要 Cookie 登录。
/// pn 默认为 1，ps <= 0 时可获取整个列表
pub fn subscribe_api(tagid: i64, pn: i64, ps: i64) -> anyhow::Result<Url> {
    let api_str = format!("https://api.bilibili.com/x/relation/tag?tagid={tagid}&pn={pn}&ps={ps}");
    Ok(Url::parse(&api_str).with_context(|| "Parse bili subscribe api failed")?)
}

/// 获取登录账号的信息，需要 Cookie 登录。
pub fn user_data_api(mid: &str) -> anyhow::Result<Url> {
    let api_str = format!("https://api.bilibili.com/x/space/navnum?mid={mid}");
    Ok(Url::parse(&api_str).with_context(|| "Parse bili user data api failed")?)
}

/// 获取登陆账号的信息，需要 Cookie 登录。
pub fn my_info_api(cookies: &str) -> anyhow::Result<Url> {
    Ok(Url::parse("https://api.bilibili.com/x/web-interface/nav").with_context(|| "Parse bili my info api failed")?)
}

/// 获取动态列表，不需要登录。
pub fn album_list_api(mid: i64, pn: i64, ps: i64) -> anyhow::Result<Url> {
    let api_str = format!("https://api.bilibili.com/x/dynamic/feed/draw/doc_list?uid={mid}&page_num={pn}&page_size={ps}&biz=all");
    Ok(Url::parse(&api_str).with_context(|| "Parse bili album list api failed")?)
}
